Skip to content

Conversation

@sky1122
Copy link
Contributor

@sky1122 sky1122 commented Dec 22, 2025

Issue number:

Closes #799

Description of changes:

Switch Kubernetes to use Go 1.24+ runtime FIPS support.
Packaging the GODEBUG=fips140=only config file in fips variants

Note: these are the minimal changes for switching Go 1.24+ runtime FIPS support.
The rest of the changes need to be clean up will go to a separate release with the SDK clean up release

Testing done:
Testing with non fips cypher image registry

Events:
  Type     Reason     Age                     From               Message
  ----     ------     ----                    ----               -------
  Normal   Scheduled  7m35s                   default-scheduler  Successfully assigned default/test-pull-nonfips to ip-192-168-31-220.us-west-2.compute.internal
  Normal   Pulling    4m38s (x5 over 7m35s)   kubelet            Pulling image "localhost:5001/test:latest"
  Warning  Failed     4m38s (x5 over 7m35s)   kubelet            Failed to pull image "localhost:5001/test:latest": failed to pull and unpack image "localhost:5001/test:latest": failed to resolve image: failed to do request: Head "https://localhost:5001/v2/test/manifests/latest": remote error: tls: handshake failure
  Warning  Failed     4m38s (x5 over 7m35s)   kubelet            Error: ErrImagePull
  Warning  Failed     2m24s (x20 over 7m34s)  kubelet            Error: ImagePullBackOff
  Normal   BackOff    2m11s (x21 over 7m34s)  kubelet            Back-off pulling image "localhost:5001/test:latest"

Terms of contribution:

By submitting this pull request, I agree that this contribution is dual-licensed under the terms of both the Apache License, version 2.0, and the MIT license.


export KUBE_OUTPUT_SUBPATH="_fips_output/local"
export GOEXPERIMENT="boringcrypto"
# Runtime FIPS: use GODEBUG=fips140=only instead of compile-time boringcrypto
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think these comments are useful. In general, a comment should cover the current code and implementation details, not historical details that can be looked up in Git history.

The Kubernetes builds are complicated and have a lot of moving parts already, so in this case it might be better to just copy the same binaries into the FIPS and non-FIPS subpackages. It will also help compile times quite a lot.

Add fips-go.conf systemd drop-in that sets GODEBUG=fips140=only for
all services in FIPS variants. This enables Go's native FIPS 140-3
mode at runtime, restricting crypto packages to FIPS-approved algorithms.

Signed-off-by: Jingwei Wang <[email protected]>
@sky1122 sky1122 force-pushed the fips branch 2 times, most recently from 9c77ef2 to cbe3791 Compare January 14, 2026 19:14
…oringcrypto

Remove GOEXPERIMENT=boringcrypto from FIPS builds of kubelet and
kube-proxy. FIPS compliance is now handled at runtime via
GODEBUG=fips140=only using Go 1.24+ native FIPS 140-3 support.

Signed-off-by: Jingwei Wang <[email protected]>
@sky1122 sky1122 marked this pull request as ready for review January 15, 2026 22:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Go 1.24+ runtime FIPS 140-3 support

2 participants